package net.crozz.openapi.weibo;

import net.crozz.openapi.ApiException;
import net.crozz.openapi.http.Param;
import net.crozz.openapi.http.Requester;
import net.crozz.openapi.weibo.model.statuses.Resp_upload;

public class Statuses {

    private Requester client;
    private String    baseURL;

    Statuses(Requester client, String baseURL) {
        this.client = client;
        this.baseURL = baseURL;
    }

    /**
     * 上传图片并发布一条新微博<br/>
     * http://open.weibo.com/wiki/2/statuses/upload
     *
     * @param source       采用OAuth授权方式不需要此参数，其他授权方式为必填参数，数值为应用的AppKey。
     * @param access_token 采用OAuth授权方式为必填参数，其他授权方式不需要此参数，OAuth授权后获得。
     * @param status       必填, 要发布的微博文本内容，必须做URLencode，内容不超过140个汉字。
     * @param pic          必填, 要上传的图片，仅支持JPEG、GIF、PNG格式，图片大小小于5M。
     * @param visible      微博的可见性，0：所有人能看，1：仅自己可见，2：密友可见，3：指定分组可见，默认为0。
     * @param list_id      微博的保护投递指定分组ID，只有当visible参数为3时生效且必选。
     * @param lat          纬度，有效范围：-90.0到+90.0，+表示北纬，默认为0.0。
     * @param lon          经度，有效范围：-180.0到+180.0，+表示东经，默认为0.0。
     * @param annotations  元数据，主要是为了方便第三方应用记录一些适合于自己使用的信息，每条微博可以包含一个或者多个元数据，必须以json字串的形式提交，字串长度不超过512个字符，具体内容可以自定。
     * @param rip          开发者上报的操作用户真实IP，形如：211.156.0.1。
     */
    public Resp_upload upload(String source, String access_token, String status, byte[] pic, String visible, String list_id, String lat, String lon, String annotations, String rip) throws ApiException {
        return client.multiPartObj(
                Resp_upload.class,
                "https://upload.api.weibo.com/2/statuses/upload.json",
                Param.multiPartParm("pic", "pic", pic),
                Param.newParam("source", source),
                Param.newParam("status", status),
                Param.newParam("visible", visible),
                Param.newParam("list_id", list_id),
                Param.newParam("lat", lat),
                Param.newParam("lon", lon),
                Param.newParam("annotations", annotations),
                Param.newParam("rip", rip),
                Param.newParam("access_token", access_token)
        );
    }

}

